package com.cnswhy.cloud.server.core.channel.wxpay.service;

import com.alibaba.fastjson.JSONObject;
import com.cnswhy.cloud.common.core.exception.BizException;
import com.cnswhy.cloud.server.core.channel.wxpay.model.WxSessionKeyReq;
import com.cnswhy.cloud.server.core.channel.wxpay.model.WxSessionKeyRp;
import com.cnswhy.cloud.server.core.channel.wxpay.model.WxpayServiceRp;


import java.util.Map;

public interface WxpayService {

    /**
     * @return 返回json
     * （1）查询成功返回{"code":"10000","msg":"Success","trade_status":"交易状态"}，
     * （2）查询异常返回{"code":"非10000","msg":"错误原因"}
     * （3）交易状态：
     * WAIT_BUYER_PAY（交易创建，等待买家付款）、
     * TRADE_CLOSED（未付款交易超时关闭，或支付完成后全额退款）、
     * TRADE_SUCCESS（交易支付成功）、
     * TRADE_FINISHED（交易结束，不可退款）
     * @Description 订单查询
     * @Author lzh
     * @Date 20:14 2018/11/5
     * @Param out_trade_no：订单号
     */
    public WxpayServiceRp queryOrder(String out_trade_no) throws Exception;

    public WxpayServiceRp toPay(String out_trade_no, Double total_amount, String spbill_create_ip, String returnUrl) throws Exception;

    /**
     * @param map
     * @return
     * @throws Exception
     */
    public JSONObject notify(Map<String, String> map) throws BizException;

    public WxSessionKeyRp getWxSessionKey(WxSessionKeyReq wxSessionKeyReq);

    public WxpayServiceRp daifu(String out_trade_no, Long total_amount, String userName, String openId) throws Exception;

    public WxpayServiceRp querydfOrder(String out_trade_no) throws Exception;

}
